<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;
use Hash;
class UsersController extends Controller
{
    /**
     * 文件上传方法
     *
     * @return    string      $temp_name     随机文件名
     */
    public function picInfo(Request $request)
    {
        if($request -> hasFile('pic')){
            // 获取文件后缀名
            $hz = $request -> file('pic') -> getClientOriginalExtension();
            // 随机后缀名,并拼接文件后缀名
            $temp_name = md5(time().rand(100000,999999)).'.'.$hz;
            // 将文件上传至指定位置
            $request -> file('pic') -> move('./images/admin/user_pic',$temp_name);
            
        }
        return $temp_name;

    }
    /**
     * 静态方法进行权限判断
     * 
     * @param         string               判断操作管理是否关闭
     * @param         string               判断管理员权限是否开启*/
    static public function func($operation_name,$role_func){
        // 进行session判断操作管理是否关闭,管理员权限是否开启，如果违法操作则返回
        if(session($operation_name) == 2 || empty(strstr(session('role_func'),$role_func))){
                return true;
        }
    }

    /**
     * 用户列表
     * 
     * @param    array    $data    数据库查询内容
     * @param    string   $search  搜索内容
     * @param    int      $count   分页条数
     * @return   用户列表模板
     */
    public function getIndex(Request $request)
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('会员列表','user_list')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        $count = $request -> input('count','10');
        $search = $request -> input('search','');

        $data = DB::table('users') -> where('user_email','like','%'.$search.'%') -> paginate($count);
        return view('admin.users.list',['title'=>'用户列表','data'=>$data,'request'=>$request->all()]);
    }

    /**
     * 用户添加页面
     * 
     * @return    添加模板
     */
    public function getAdd()
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('会员添加','user_add')){
            return back() ->  with('error','违法操作,禁止访问');
        }
        return view('admin.users.add',['title'=>'会员添加']);

    }


    /**
     * 执行用户添加
     * 
     * @param    array    $data         用户插入表单内容,除(_token,pic)
     * @param    string   $temp_name    随机文件名 
     * @param    bool     $res          添加执行代码 
     * @return   用户列表模板
     */
    public function postDoadd(Request $request)
    {   

        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('会员添加','user_add')){
            return back() ->  with('error','违法操作,禁止访问');
        }

        $data = $request -> except(['_token']);
        if($request -> hasFile('pic')){
            $temp_name = $this->picInfo($request);
        }else{
            $temp_name = 'default.jpg';
        }

        $data['user_pic'] = $temp_name;
        // 哈希加密
        $data['user_pass'] = Hash::make($data['user_pass']);
        $res = DB::table('users') -> insert($data);
        if($res){
            return redirect('/admin/users/index') -> with('success','会员添加成功');
        }else{
            return back() -> with('error','会员添加失败');
        }

    }

    /**
     * 用户删除
     * 
     * @param    int     $id    要删除的id值
     * @param    bool    $res   执行true or flase
     * @return   返回列表模板
     */
    public function getDelete(Request $request,$id = '')
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('会员删除','user_delete')){
            return back() ->  with('error','违法操作,禁止访问');
        }

        if($id || $id = $request -> input('id')){
            $res = DB::table('users') -> whereIn('id',$id) -> delete();
            if($res){
                return redirect('/admin/users/index') -> with('success','用户删除成功');
            }else{
                return back() -> with('error','用户删除失败');
            }
        }
    }

    /**
     * 用户修改
     * 
     * @param    int     $id     接收要修改的ID
     * @param    array   $data   单条查询内容
     * @return   修改模板
     */
    public function getEdit($id)
    {
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('会员修改','user_edit')){
            return back() ->  with('error','违法操作,禁止访问');
        }

        // 查询要修改的内容
        $data = DB::table('users')->where('id',$id)->first();
        return view('/admin/users/edit',['title'=>'用户修改','data'=>$data]);
    }

    /**
     * 执行用户修改
     * 
     * @param    array    $data         获取用户插入表单内容,除(_token,pic,id)
     * @param    int      $id           获取id值
     * @param    string   $temp_name    随机文件名 
     * @param    bool     $res          添加执行代码 返回true of flase
     * @return   用户列表模板
     */
    public function postDoedit(Request $request)
    {   
        // 调用判断方法,只要有一个为真则返回上一级
        if(self::func('会员修改','user_edit')){
            return back() ->  with('error','违法操作,禁止访问');
        }

        $id = $request -> only(['id']);
        $data = $request -> except(['_token','pic','id']);
        // 检测是否有文件上传,有的话执行上传方法,没有的话调用数据库的pic值
        if($request -> hasFile('pic')){
            $temp_name = $this->picInfo($request);
        }else{
            $temp_name = DB::table('users') -> where('id',$id) -> value('user_pic');
        }
        // 将pic值 压入数组
        $data['user_pic'] = $temp_name;
        // 哈希加密 ---------  可以添加修改密码选项
        // $data['user_pass'] = Hash::make($data['user_pass']);
        $res = DB::table('users') -> where('id', $id) -> update($data);
        if($res){
            return redirect('/admin/users/index') -> with('success','用户修改成功');
        }else{
            return back() -> with('error','用户修改失败');
        }
    }
 
}
